#include<iostream>
using namespace std;
struct SNode{
	char *Data;
	int Top;
	int MaxSize;
};
typedef struct SNode *stack;
stack CreateStack( int MaxSize );
bool Push( stack &s, char X );
char Pop( stack &s);
int main()
{
	int i=0,j=0,k,flag=0;
	char a[100],b;
	gets(a);
	stack s;
	while(a[i])
		i++;
	s=CreateStack(i);
	while(a[j]){
		Push(s,a[j]);
		j++;
	}
	for(k=0;k<=i;k++){
		b=Pop(s);
		if(b!=a[k]){
			flag=1;
			break;
		}
	};
	if(flag==0)
		cout<<"yes";
	else
		cout<<"no";
	return 0;
	
}
stack CreateStack( int MaxSize )
{
	stack s = new SNode;
	s->Data=new char [100];
	s->Top= -1;
	s->MaxSize= MaxSize;
	return s;
}
bool Push( stack &s, char X )
{
	if(s->Top==s->MaxSize-1)
	return false;
	s->Top++;
	s->Data[s->Top] = X;
	return true;	
}
char Pop(stack &s)
{
	if(s->Top== -1)
	return false;
	return (s->Data[(s->Top)--]);
}

 
